#include "Vector3.h"
#include "Vector2.h"
#include <memory>

using namespace Framework;

Vector3 Vector3::Null = Vector3(0, 0, 0);
Vector3 Vector3::UnitX = Vector3(1, 0, 0);
Vector3 Vector3::UnitY = Vector3(0, 1, 0);
Vector3 Vector3::UnitZ = Vector3(0, 0, 1);

Vector3::Vector3(float X, float Y, float Z)
: x(X)
, y(Y)
, z(Z)
{
}

Vector3::Vector3(Vector2& vector, float Z)
: x(vector.x)
, y(vector.y)
, z(Z)
{
}

Vector3::Vector3(const Vector3& vector)
{
	memcpy(&cell, &vector.cell, sizeof(Vector3));
}

Vector3::~Vector3()
{
}

void Vector3::Normalize()
{
	Normalize(*this);
}

float Vector3::Length()
{
	return Length(*this);
}

float Vector3::SqrLength()
{
	return SqrLength(*this);
}

Vector3 Vector3::Cross(Vector3& other)
{
	return Cross(*this, other);
}